←Select platform

SendMessage(string,bool,object[]) Method

Summary

Sends a message to the DICOM Service.

Syntax

C#
C++/CLI
public void SendMessage( 
   string Message, 
   bool broadcast, 
   object[] data 
) 
public:  
   void SendMessage( 
      String^ Message, 
      bool broadcast, 
      array<Object^>^ data 
   ) 

Parameters

Message

The name of the message to send.

broadcast

A value indicating whether the Message is broadcast to all listeners.

data

The extra data to send along with the message.

Remarks

The Message event will be generated when a response is received. The service needs to be running before it can accept messages.

Example

C#
using Leadtools; 
using Leadtools.Dicom.AddIn.Common; 
using Leadtools.Dicom.AddIn.Interfaces; 
 
 
 
AutoResetEvent statusEvent = new AutoResetEvent(false); 
 
public void InstallServiceTest() 
{ 
   ServiceAdministrator admin = new ServiceAdministrator(LEAD_VARS.InstallWin32Dir); 
   ServerSettings settings = new ServerSettings(); 
   DicomService service; 
 
   settings.AETitle = "DICOM_SERVER"; 
   settings.Port = 104; 
   settings.DisplayName = "Sample Dicom Server"; 
   settings.IpAddress = Dns.GetHostEntry(Environment.MachineName).AddressList[0].ToString(); 
   service = admin.InstallService(settings); 
   if (service != null && service.Settings.AETitle == "DICOM_SERVER") 
   { 
      service.Message += new EventHandler<MessageEventArgs>(service_Message); 
      service.StatusChange += new EventHandler(service_StatusChange); 
 
      Console.WriteLine("Base Directory: {0}", admin.BaseDirectory); 
      Console.WriteLine("Server Directory: {0}", service.ServiceDirectory); 
 
      try 
      { 
         AeInfo ae = new AeInfo(); 
 
         // 
         // Start the service 
         // 
         service.Start(); 
         service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30)); 
 
         ProcessMessages(); 
 
 
         if (service.IsAdminAvailable) 
         { 
            // 
            // Add AE Title 
            // 
            ae.AETitle = "CLIENT"; 
            ae.Port = 1000; 
            ae.Address = string.Empty; 
            service.SendMessage(MessageNames.AddAeTitle, ae); 
         } 
 
         ProcessMessages(); 
 
         // 
         // Pause the service 
         // 
         service.Pause(); 
         service.WaitForStatus(ServiceControllerStatus.Paused, TimeSpan.FromSeconds(30)); 
 
         ProcessMessages(); 
 
      } 
      finally 
      { 
         if (service.Status != ServiceControllerStatus.Stopped) 
         { 
            // 
            // Stop the service 
            // 
            service.Stop(); 
            service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30)); 
         } 
 
         // 
         // UnInstall the service 
         // 
         admin.UnInstallService(service); 
      } 
   } 
} 
 
// 
// Need to process messages so events get called in time.  In a normal windows applications there is no need 
//  to do this extra processing. 
// 
private void ProcessMessages() 
{ 
   while (!statusEvent.WaitOne(0)) 
   { 
      Application.DoEvents(); 
   } 
} 
 
void service_StatusChange(object sender, EventArgs e) 
{ 
   DicomService service = sender as DicomService; 
 
   Console.WriteLine(service.Status); 
   if (service.Status == ServiceControllerStatus.Running || service.Status == ServiceControllerStatus.Stopped || 
      service.Status == ServiceControllerStatus.Paused) 
   { 
      statusEvent.Set(); 
   } 
} 
 
void service_Message(object sender, MessageEventArgs e) 
{ 
   if (e.Message.Message == MessageNames.AddAeTitle) 
   { 
      if (e.Message.Success) 
      { 
         AeInfo ae = e.Message.Data[0] as AeInfo; 
 
         Console.WriteLine("AE Title: {0}", ae.AETitle); 
         Console.WriteLine("IP Address: {0}", ae.Address); 
         Console.WriteLine("Port: {0}", ae.Port); 
      } 
      else 
      { 
         Console.WriteLine("Error Adding AETITLE: {0}", e.Message.Error); 
      } 
   } 
   statusEvent.Set(); 
} 

Requirements

Target Platforms

See Also

DicomService Class

DicomService Members

Leadtools.Dicom.Server.Admin Namespace

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom.Server.Admin Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.